/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Service;

import DAO.DAOFactory;
import DAO.UsuarioDAO;
import Entidad.Tarea;
import Entidad.Usuario;
import VO.TareaVO;
import VO.UsuarioVO;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.persistence.EntityManager;

/**
 *
 * @author David
 */
public class UserServices {
    
    public void createUser(UsuarioVO vo, EntityManager em) throws Exception{
        UsuarioDAO dao = (UsuarioDAO)DAOFactory.createDAO(DAOFactory.USUARIO);
        Usuario usuario = vo.toEntity();
        dao.create(usuario, em);
    }
    
    public UsuarioVO readUser(String username, EntityManager em) {
        UsuarioDAO userDAO = (UsuarioDAO)DAOFactory.createDAO(DAOFactory.USUARIO);
        Usuario entity = userDAO.findUsuario(username, em);
        if(entity != null) {
           UsuarioVO vo = entity.toVO();
           return vo;
        }
        else {
            return null;
        }
    }
    
    public void updateUser(UsuarioVO vo, EntityManager em) {
        UsuarioDAO userDAO = (UsuarioDAO)DAOFactory.createDAO(DAOFactory.USUARIO);
        Usuario usuario = vo.toEntity();
        userDAO.edit(usuario, em);
    }
    
    public void deleteUser(String username, EntityManager em) {
    }
    
    public List<UsuarioVO> getAllUsers(EntityManager em){
        List<UsuarioVO> listaVo = new ArrayList<UsuarioVO>();
        UsuarioDAO dao = (UsuarioDAO)DAOFactory.createDAO(DAOFactory.USUARIO);
        List<Usuario> listaUsuarios = dao.findUsuarioEntities(em);
        Iterator listaIterator = listaUsuarios.listIterator();
        while(listaIterator.hasNext()){
            Usuario user = (Usuario)listaIterator.next();
            System.out.println(user.getCorreo());
            listaVo.add(user.toVO());
        }
        return listaVo;
    }

    public void assignTask(TareaVO tareaVo, UsuarioVO usuarioVo, EntityManager em) {
        UsuarioDAO dao = (UsuarioDAO) DAOFactory.createDAO(DAOFactory.USUARIO);
        Usuario user = dao.findUsuario(usuarioVo.getCorreo(), em);
        Tarea nevatarea = tareaVo.toEntity();
        user.getTareaCollection().add(nevatarea);
        dao.edit(user, em);
    }
    
    
    
}
